// 111111111111111111111111111111111111
// var http = require('http')
// server = http.createServer(function(req,res){
//     res.writeHead(200,{
//         'Content-Type':'text/plain'
//     })
//     res.write('<h1>hello world</h1>');
//     res.end();
// })
// server.listen(7800);
// console.log('end')

//express socket.io

// 2222222222222222222222222222222222222222
// var express = require('express');
// var socket = require('socket.io')
// app = express();
// server = require('http').createServer(app);
// app.use('/',express.static(__dirname + '/www/'))

// server.listen(7800);


// 333333333333333333333333333333333333333333333

var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
// 设置一个全局的数组用来存放  用户名
var users = [];

app.use('/',express.static(__dirname + '/www/'))

server.listen(7800);
console.log(7800)
// socker 部分
io.on('connection',function(socket){
    // console.log(socket) 形参socket是一个对象，可以在这个对象上添加 用户名 和 index
    // debugger
    //接收并处理客户端发送的foo事件
    socket.on('login',function(nickname){
        // 前端传送过来的 数据
        if(users.indexOf(nickname) > -1){
            // 如果用户名存在，则向前端 推送nickExisted事件
            socker.emit('nickExisted');
            
        }else{
            socket.userIndex = users.length;
            socket.nickname = nickname;
            users.push(nickname);
            debugger
            // 验证用户名 不重复 推送 loginSuccess 事件
            socket.emit('loginSuccess','hi');
            io.sockets.emit('system',nickname,users.length,'login');
            //用户登录成功后，向所有连接到服务器的客户端发送当前登陆用户的昵称 
            // 在connection事件的回调函数中，socket表示的是当前连接到服务器的那个客户端。
            // 所以代码socket.emit('foo')则只有自己收得到这个事件，
            // 而socket.broadcast.emit('foo')则表示向除自己外的所有人发送该事件，
            // 另外，上面代码中，io表示服务器整个socket连接，
            // 所以代码io.sockets.emit('foo')表示所有人都可以收到该事件。
        }
    });
    socket.on('disconnect',function(){
        // 将断开连接的用户从users中删除
        users.splice(socket.userIndex,1);
        // 通知除自己以外的所有人
        socket.broadcast.emit('system',socket.nickname,users.length,'logout');
    })

    //接收新消息
    socket.on('postMsg', function(msg) {
        //将消息发送到除自己外的所有用户
        socket.broadcast.emit('newMsg', socket.nickname, msg);
    });
})












